/*
 * console.c
 *
 *  Created on: 26/10/2011
 *      Author: utn_so
 */

#include "consolaPFS.h"


int main (void){
	int arg=0;
	pthread_t consoleID;
	if (pthread_create(&consoleID, NULL, (void*)&console,(void*)arg)){
		perror("Ocurrio error FATAL");
		printf("Error Fatal");
		return FAILURE;
	}
	console();
	pthread_join(consoleID,NULL);
	printf("Exit Console.\n");
	return SUCCESS;
}

void console (void *arg){
	uint32_t clusterLibres, clusterOcupados;
	int seguir=1;
	char command[60];

	while (seguir){

		gets(command);

		if (!strncmp("fsinfo",command,6)){
			printf("Entro en funcion fsinfo.\n");
			seguir = fsinfo(command);
		}else if (!strncmp("finfo",command,5)){
			printf("Entro en funcion finfo.\n");
			seguir = finfo(command);
		}else if (!strncmp("exit",command,4)){
			seguir = EXIT;
		}else{
			printf("El comando ingresado es incorrecto. Porfavor ingrese uno de los siguientes comandos.\n");
			printf(" - fsinfo.\n - finfo [Path archivo].\n");
			seguir = RETRY;
		}

	}

}

int fsinfo(char * command){
	int clusterLibres, clusterOcupados;
	clusterLibres = collection_list_size(listaClustersLibres());
	clusterOcupados = cantidadTotalDeClusters() - clusterLibres;
	printf("La cantidad de cluster ocupados son: %d\n", clusterOcupados);
	printf("La cantidad de cluster libres son: %d\n", clusterLibres);
	printf("El tamaño de un sector es de: %d B\n",  pPfs.fat32.bootSector.bytesPerSector);
	printf("El tamaño de un cluster es de: %d B\n",  bytesPerCluster());
	printf("El tamaño de la FAT es de: %d KB\n",  (pPfs.fat32.bootSector.sectorsPerFat * pPfs.fat32.bootSector.bytesPerSector) / 1024);

	return SUCCESS;
}

int finfo(char * command){
	int error = 0;//Sacar, sirve como ejemplo para ver que pasa en caso de un error en la funcion

	if (strchr(command,'/') != NULL){
		printf("EntroOoooOooo!!!\n");
	}else{
		printf("No ingreso un path correcto. Please be sure that it be an absolute path.\n");
		printf("Please try again the command\n");
	}

	if (error){
			return FAILURE;
	}

	return SUCCESS;
}
